# Copyright 2019 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# NOTE: This file is auto generated by the elixir code generator program.
# Do not edit this file manually.

defmodule GoogleApi.DriveLabels.V2.Model.GoogleAppsDriveLabelsV2DeltaUpdateLabelResponseResponse do
  @moduledoc """
  A single response from an update.

  ## Attributes

  *   `createField` (*type:* `GoogleApi.DriveLabels.V2.Model.GoogleAppsDriveLabelsV2DeltaUpdateLabelResponseCreateFieldResponse.t`, *default:* `nil`) - Creates a new Field.
  *   `createSelectionChoice` (*type:* `GoogleApi.DriveLabels.V2.Model.GoogleAppsDriveLabelsV2DeltaUpdateLabelResponseCreateSelectionChoiceResponse.t`, *default:* `nil`) - Creates a new selection list option to add to a Selection Field.
  *   `deleteField` (*type:* `GoogleApi.DriveLabels.V2.Model.GoogleAppsDriveLabelsV2DeltaUpdateLabelResponseDeleteFieldResponse.t`, *default:* `nil`) - Deletes a Field from the label.
  *   `deleteSelectionChoice` (*type:* `GoogleApi.DriveLabels.V2.Model.GoogleAppsDriveLabelsV2DeltaUpdateLabelResponseDeleteSelectionChoiceResponse.t`, *default:* `nil`) - Deletes a Choice from a Selection Field.
  *   `disableField` (*type:* `GoogleApi.DriveLabels.V2.Model.GoogleAppsDriveLabelsV2DeltaUpdateLabelResponseDisableFieldResponse.t`, *default:* `nil`) - Disables Field.
  *   `disableSelectionChoice` (*type:* `GoogleApi.DriveLabels.V2.Model.GoogleAppsDriveLabelsV2DeltaUpdateLabelResponseDisableSelectionChoiceResponse.t`, *default:* `nil`) - Disables a Choice within a Selection Field.
  *   `enableField` (*type:* `GoogleApi.DriveLabels.V2.Model.GoogleAppsDriveLabelsV2DeltaUpdateLabelResponseEnableFieldResponse.t`, *default:* `nil`) - Enables Field.
  *   `enableSelectionChoice` (*type:* `GoogleApi.DriveLabels.V2.Model.GoogleAppsDriveLabelsV2DeltaUpdateLabelResponseEnableSelectionChoiceResponse.t`, *default:* `nil`) - Enables a Choice within a Selection Field.
  *   `updateField` (*type:* `GoogleApi.DriveLabels.V2.Model.GoogleAppsDriveLabelsV2DeltaUpdateLabelResponseUpdateFieldPropertiesResponse.t`, *default:* `nil`) - Updates basic properties of a Field.
  *   `updateFieldType` (*type:* `GoogleApi.DriveLabels.V2.Model.GoogleAppsDriveLabelsV2DeltaUpdateLabelResponseUpdateFieldTypeResponse.t`, *default:* `nil`) - Update Field type and/or type options.
  *   `updateLabel` (*type:* `GoogleApi.DriveLabels.V2.Model.GoogleAppsDriveLabelsV2DeltaUpdateLabelResponseUpdateLabelPropertiesResponse.t`, *default:* `nil`) - Updated basic properties of a Label.
  *   `updateSelectionChoiceProperties` (*type:* `GoogleApi.DriveLabels.V2.Model.GoogleAppsDriveLabelsV2DeltaUpdateLabelResponseUpdateSelectionChoicePropertiesResponse.t`, *default:* `nil`) - Updates a Choice within a Selection Field.
  """

  use GoogleApi.Gax.ModelBase

  @type t :: %__MODULE__{
          :createField =>
            GoogleApi.DriveLabels.V2.Model.GoogleAppsDriveLabelsV2DeltaUpdateLabelResponseCreateFieldResponse.t()
            | nil,
          :createSelectionChoice =>
            GoogleApi.DriveLabels.V2.Model.GoogleAppsDriveLabelsV2DeltaUpdateLabelResponseCreateSelectionChoiceResponse.t()
            | nil,
          :deleteField =>
            GoogleApi.DriveLabels.V2.Model.GoogleAppsDriveLabelsV2DeltaUpdateLabelResponseDeleteFieldResponse.t()
            | nil,
          :deleteSelectionChoice =>
            GoogleApi.DriveLabels.V2.Model.GoogleAppsDriveLabelsV2DeltaUpdateLabelResponseDeleteSelectionChoiceResponse.t()
            | nil,
          :disableField =>
            GoogleApi.DriveLabels.V2.Model.GoogleAppsDriveLabelsV2DeltaUpdateLabelResponseDisableFieldResponse.t()
            | nil,
          :disableSelectionChoice =>
            GoogleApi.DriveLabels.V2.Model.GoogleAppsDriveLabelsV2DeltaUpdateLabelResponseDisableSelectionChoiceResponse.t()
            | nil,
          :enableField =>
            GoogleApi.DriveLabels.V2.Model.GoogleAppsDriveLabelsV2DeltaUpdateLabelResponseEnableFieldResponse.t()
            | nil,
          :enableSelectionChoice =>
            GoogleApi.DriveLabels.V2.Model.GoogleAppsDriveLabelsV2DeltaUpdateLabelResponseEnableSelectionChoiceResponse.t()
            | nil,
          :updateField =>
            GoogleApi.DriveLabels.V2.Model.GoogleAppsDriveLabelsV2DeltaUpdateLabelResponseUpdateFieldPropertiesResponse.t()
            | nil,
          :updateFieldType =>
            GoogleApi.DriveLabels.V2.Model.GoogleAppsDriveLabelsV2DeltaUpdateLabelResponseUpdateFieldTypeResponse.t()
            | nil,
          :updateLabel =>
            GoogleApi.DriveLabels.V2.Model.GoogleAppsDriveLabelsV2DeltaUpdateLabelResponseUpdateLabelPropertiesResponse.t()
            | nil,
          :updateSelectionChoiceProperties =>
            GoogleApi.DriveLabels.V2.Model.GoogleAppsDriveLabelsV2DeltaUpdateLabelResponseUpdateSelectionChoicePropertiesResponse.t()
            | nil
        }

  field(:createField,
    as:
      GoogleApi.DriveLabels.V2.Model.GoogleAppsDriveLabelsV2DeltaUpdateLabelResponseCreateFieldResponse
  )

  field(:createSelectionChoice,
    as:
      GoogleApi.DriveLabels.V2.Model.GoogleAppsDriveLabelsV2DeltaUpdateLabelResponseCreateSelectionChoiceResponse
  )

  field(:deleteField,
    as:
      GoogleApi.DriveLabels.V2.Model.GoogleAppsDriveLabelsV2DeltaUpdateLabelResponseDeleteFieldResponse
  )

  field(:deleteSelectionChoice,
    as:
      GoogleApi.DriveLabels.V2.Model.GoogleAppsDriveLabelsV2DeltaUpdateLabelResponseDeleteSelectionChoiceResponse
  )

  field(:disableField,
    as:
      GoogleApi.DriveLabels.V2.Model.GoogleAppsDriveLabelsV2DeltaUpdateLabelResponseDisableFieldResponse
  )

  field(:disableSelectionChoice,
    as:
      GoogleApi.DriveLabels.V2.Model.GoogleAppsDriveLabelsV2DeltaUpdateLabelResponseDisableSelectionChoiceResponse
  )

  field(:enableField,
    as:
      GoogleApi.DriveLabels.V2.Model.GoogleAppsDriveLabelsV2DeltaUpdateLabelResponseEnableFieldResponse
  )

  field(:enableSelectionChoice,
    as:
      GoogleApi.DriveLabels.V2.Model.GoogleAppsDriveLabelsV2DeltaUpdateLabelResponseEnableSelectionChoiceResponse
  )

  field(:updateField,
    as:
      GoogleApi.DriveLabels.V2.Model.GoogleAppsDriveLabelsV2DeltaUpdateLabelResponseUpdateFieldPropertiesResponse
  )

  field(:updateFieldType,
    as:
      GoogleApi.DriveLabels.V2.Model.GoogleAppsDriveLabelsV2DeltaUpdateLabelResponseUpdateFieldTypeResponse
  )

  field(:updateLabel,
    as:
      GoogleApi.DriveLabels.V2.Model.GoogleAppsDriveLabelsV2DeltaUpdateLabelResponseUpdateLabelPropertiesResponse
  )

  field(:updateSelectionChoiceProperties,
    as:
      GoogleApi.DriveLabels.V2.Model.GoogleAppsDriveLabelsV2DeltaUpdateLabelResponseUpdateSelectionChoicePropertiesResponse
  )
end

defimpl Poison.Decoder,
  for: GoogleApi.DriveLabels.V2.Model.GoogleAppsDriveLabelsV2DeltaUpdateLabelResponseResponse do
  def decode(value, options) do
    GoogleApi.DriveLabels.V2.Model.GoogleAppsDriveLabelsV2DeltaUpdateLabelResponseResponse.decode(
      value,
      options
    )
  end
end

defimpl Poison.Encoder,
  for: GoogleApi.DriveLabels.V2.Model.GoogleAppsDriveLabelsV2DeltaUpdateLabelResponseResponse do
  def encode(value, options) do
    GoogleApi.Gax.ModelBase.encode(value, options)
  end
end
